package com.malie.myspringboot.jdk8;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class DateDemo {

    public static void main(String[] args) {
        //获取当前日期 (不含时分秒)
        LocalDate now = LocalDate.now();
        System.out.println(now);


        // 构造指定日期
        LocalDate date = LocalDate.of(2000, 1, 1);
        System.out.println(date);

        //获取年月日信息
        LocalDate date1 = LocalDate.now();
        System.out.printf("年=%d， 月=%d， 日=%d", date1.getYear(), date1.getMonthValue(), date1.getDayOfMonth());

        // 比较两个日期是否相等
        LocalDate now1 = LocalDate.now();
        LocalDate date2 = LocalDate.of(2010, 1, 1);
        System.out.println(now1.equals(date2));

        //LocalTime 用于表示当天时间 只有时间，不包含日期
        LocalTime now2 = LocalTime.now();
        System.out.println(now2);

        // 时间增量 plusXXX
        LocalTime now3 = LocalTime.now();
        LocalTime time = now3.plusHours(1);
        System.out.println(time);

        // 日期增量
        LocalDate now4 = LocalDate.now();
        LocalDate plus = now4.plus(1, ChronoUnit.WEEKS);
        System.out.println(plus);

        // isAfter()、isBefore()用于判断当前日期时间和指定日期时间的比较
        LocalDate now5 = LocalDate.now();
        LocalDate date3 = LocalDate.of(2000, 1, 1);
        if (now5.isAfter(date3)) {
            System.out.println("千禧年过去了");
        }
        LocalDate date4 = LocalDate.of(2022, 1, 1);
        if (now5.isBefore(date4)) {
            System.out.println("2022还没来");
        }

        // 解析日期
        String dateText = "20210621";
        LocalDate parse = LocalDate.parse(dateText, DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println("格式化之后的日期=" + parse);

        //格式化日期
        String s = parse.format(DateTimeFormatter.ISO_DATE);
        System.out.println("dateText=" + s);


        // 日期时间转字符串
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime now6 = LocalDateTime.now();
        System.out.println(now6);
        String format = now6.format(dateTimeFormatter);
        System.out.println("datestring=" + format);

        // 字符串转日期时间
        String datetimeText = "1999-12-31 23:59:59";
        LocalDateTime datetime = LocalDateTime.parse(datetimeText, dateTimeFormatter);
        System.out.println(datetime);

       /*
       Instant 时间戳
        Duration        持续时间、时间差
        LocalDate       只包含日期，比如：2018-09-24
        LocalTime       只包含时间，比如：10:32:10
        LocalDateTime   包含日期和时间，比如：2018-09-24 10:32:10
        Peroid          时间段
        ZoneOffset 时区偏移量，比如：+8:00
        ZonedDateTime   带时区的日期时间
        Clock           时钟，可用于获取当前时间戳
        java.time.format.DateTimeFormatter      时间格式化类
        */
    }
}
